package com.zjdiepu.www.dao.third;

import java.util.List;
import java.util.Set;

import org.apache.ibatis.annotations.Param;

import com.zjdiepu.www.model.third.dto.JuheSeries;
import com.zjdiepu.www.model.third.ext.JuheSeriesExt;

/**
 * 车系dao层操作<br/>
 * @author xiongxiaotun<br/>
 * @time 2017年03月23日 20时33分<br/>
 * @since 1.0<br/>
 */
public interface JuheSeriesMapper {
	/**
	 * 主键删除
	 * @param id
	 * @return
	 */
	int deleteByPrimaryKey(String id);

	/**
	 * 添加记录
	 * 
	 * @param juheSeries
	 * @return
	 */
	int insert(JuheSeries juheSeries);

	/**
	 * 批量添加记录
	 * @param juheSeriess
	 * @return
	 */
	int insertBatch(List<JuheSeries> juheSeriess);

	/**
	 * 主键查询
	 * @param id
	 * @return
	 */
	JuheSeries selectByPrimaryKey(String id);

	/**
	 * 主键更新：只更新不是null值字段，字符串还要求trim()后长度不为0
	 * @param juheSeries
	 * @return
	 */
	int updateByPrimaryKeySelective(JuheSeries juheSeries);

	/**
	 * 主键更新
	 * @param juheSeries
	 * @return
	 */
	int updateByPrimaryKey(JuheSeries juheSeries);
	
	/**
	 * 条件查询
	 * @param juheSeriesExt
	 * @return
	 */
	List<JuheSeries> selectByExt(JuheSeriesExt juheSeriesExt);
	
	/**
	 * 条件统计
	 * @param juheSeriesExt
	 * @return
	 */
	int countByExt(JuheSeriesExt juheSeriesExt);
	
	/**
	 * 根据主键清除空字段，设置值为null
	 * @param fieldNames 字段名
	 * @param id 主键
	 */
	void clearEmpty(@Param("fieldNames")Set<String> fieldNames, @Param("id")String id);
	
	/**
	 * 清空表
	 * @author xiongxiaotun@126.com
	 * @time 2017年3月22日 下午8:42:43
	 * @since 1.0.0
	 * @update
	 */
	void truncate();
	/**
	 * 删除全部数据
	 * @author xiongxiaotun@126.com
	 * @time 2017年3月22日 下午8:42:43
	 * @since 1.0.0
	 * @update
	 */
	void deleteAll();
	/**
	 * 根据SeriesId更新数据
	 * @author xiongxiaotun@126.com
	 * @time 2017年3月22日 下午8:42:43
	 * @param juheSeries
	 * @since 1.0.0
	 * @update
	 */
	int updateBySeriesId(JuheSeries juheSeries);
	
	/**
	 * 根据品牌删除
	 * @author xiongxiaotun@126.com
	 * @time 2017年3月22日 下午8:42:43
	 * @param brandId
	 * @since 1.0.0
	 * @update
	 */
	void deleteByBrandId(@Param("brandId")String brandId);
	/**
	 * 精确统计(=)
	 * @author xiongxiaotun
	 * @time 2017年07月18日 18时03分
	 * @since 1.0
	 * @update
	 * @param sysPower
	 * @return
	 */
	int countRefined(JuheSeries juheSeries);
	/**
	 * 精确查询(=)
	 * @author xiongxiaotun
	 * @time 2017年07月18日 18时03分
	 * @since 1.0
	 * @update
	 * @param juheSeries
	 * @return
	 */
	JuheSeries selectRefined(JuheSeries juheSeries);
	
	/**
	 * 查询最大SeriesId
	 * @return int
	 */
	int selectMaxSeriesId();
}